package es.cea.biblioteca;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class AdminAutoresGServlet
 */
public class AdminAutoresGServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
 
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html");
		PrintWriter writer=response.getWriter();
		
		writer.println("<html><head><title>Biblioteca - Gestion de autores</title>"+
		"<h2>Gestion de autores</h2><br/>");
		
		//recojo lista de autores
		List<Autor> listaAutores=(List<Autor>) request.getSession().getServletContext().getAttribute(AtributosConstantes.listaAutores.toString());		
		
		//si no recibo parametros por GET muestro formulario para nuevo autor
		if(request.getParameter("nombre")==null && request.getParameter("accion").equals("nuevo")){
			writer.println("<form action='./adminAutoresG?accion=guardarnuevo' method='post'>"+
					"Nombre autor: <input name='nombre' type='text'/><br/>"+					
					" <input type='submit' value='Enviar' /></form><br/>"+
					"<a href='./adminAutores'>Volver</a>");			
		}
		
		//si recibo el parametro ref y el parametro accion como "modificar" es para guardar 
		if(request.getParameter("nombre")!=null && request.getParameter("accion").equals("modificar")){
			//busco el autor a modificar en la lista			
			Autor autor=Utilidades.buscarAutor(request.getParameter("nombre"),listaAutores);
			
			writer.println("<form action='./adminAutoresG?nombre="+request.getParameter("nombre")+"&accion=guardar' method='post'>"+
					"Nombre Autor: <input name='autor' type='text' value='"+autor.nombre+"'/><br/>"+
					" <input type='submit' value='Enviar' /></form><br/>"+
					"<a href='./adminAutores'>Volver</a>");					
		}
		
		//si recibo como accion "guardar" sin referencia es guardar uno nuevo
		if(request.getParameter("accion").equals("guardarnuevo")){
			System.out.println("guardar nuevo autor "+request.getParameter("nombre"));			
			Autor autor=new Autor(request.getParameter("nombre"));
			
			
			listaAutores.add(autor);
			request.getSession().getServletContext().setAttribute(AtributosConstantes.listaAutores.toString(), listaAutores);
			
			request.getRequestDispatcher("./adminAutores").forward(request, response);
		}
		
		//si recibo como accion "guardar" y una referencia es modificar un autor
		if(request.getParameter("accion").equals("guardar") && request.getParameter("nombre")!=null){			
			System.out.println("modificar autor "+request.getParameter("nombre"));
			Autor aut=Utilidades.buscarAutor(request.getParameter("nombre"),listaAutores);
			aut.nombre=request.getParameter("autor");
			
			request.getSession().getServletContext().setAttribute(AtributosConstantes.listaAutores.toString(), listaAutores);
			
			request.getRequestDispatcher("./adminAutores").forward(request, response);
		}
		
		
		writer.close();
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request,response);
	}

}
